a:6:{i:0;s:11924:"				<div class="h1"><h1>Discover Andaman With Neil Island Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.andamanleisure.co.in/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.andamanleisure.co.in/packages.htm" title="Packages">Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Discover Andaman With Neil Island Tour</p>
				<br />
				
								
						<script language="javascript"> 
							function topDestinationToggle(showHideDiv, switchTextDiv) {
							var ele = document.getElementById(showHideDiv);
							var text = document.getElementById(switchTextDiv);
							if(ele.style.display == "block") {
								ele.style.display = "none";
							  text.innerHTML = "View More &#9660;";
							}
							else {
							  ele.style.display = "block";
							  text.innerHTML = "View Less &#9650;";
							}
							}
		                </script>
											<script type="text/javascript">			
					(function($){	
					  $(function(){
						$('[id^=detailslider]').each(function(){
							$(this).DG_Slider({
								auto: true, mode:'fade', pager:true, pagerType:'short',controls:true
							});
						})
				
						$('a[rel=gall]').fancybox()
					  });	
					}(jQuery))
					</script>
					
					<br />
					<div class="data">
					<table class="w100 formTable bdr0 imgWidth">
					<tr>
					<td class="p10px">
					<table class="w100 packageForm">
											<tr>
						<td class="b p5px w125px vat">Duration </td>
						<td class="p5px pl0px vat">
						6 Nights / 7 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Port Blair</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Price (Starting From) </td>
						<td class="p5px pl0px vat"><span class="dif">On Request</span></td>
						</tr>
												<tr>
						<td></td>
						<td>
						<p>
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.andamanleisure.co.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Discover Andaman With Neil Island Tour - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>
						<a href="#" onclick="document.getElementById('frmpackagedetail').submit();" class="button p7px pl12px pr12px c5px b large dib mt10px">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="84155"/>
						</form>
						</p>
						</td>
						</tr>
											</table>
					</td>
											<td class="p10px vat imgWidth150 w150px lh0">
						<div class="demo-wrap">
						<ul class="lsn m0px p0px" >
															<li class="bdr bw3px c5px p1px"><div class="dt"><p class="ac vam dtc w150px h150px"><a rel="gall" data-fancybox="showZoomImage" href="https://ttw.wlimg.com/package-images/photo-big/dir_1/26949/148590.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_1/26949/148590.jpg"  width="150" height="150"    alt="Discover Andaman With Neil Island Tour" title="Discover Andaman With Neil Island Tour" /></a></p></div></li>
															</ul>
						</div>
						</td>
											</tr>
					</table>
					</div>
					<br />
					
											<div class="headHr">
			            <p class="p7px b pl10px xlarge">Tour Itinerary</p>
			            </div>
			            
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 1:</b> Arrive Andaman (Port Blair), Watersports Complex & Cellular Jail visit by day and Sound & Light show
								</p>
								<p class="aj">Arrive at the Port Blair Airport, Veer Savarkar Airport, an IHPL representative will meet you and assist you to your hotel. The capital city of Andaman, Port Blair is famous for its pristine natural beauty and serene environment. The city offers fabulous views of coconut and palm trees, azure blue water and gleaming sand. It is one of the major tourist places in India.<br />
<br />
Relax and rest at the hotel. After lunch, spend some time at Water Sports Complex (closed on Wednesday). Indulge in water activities at your own cost; like on-water obstacle and non-motorized watersports in a safe area of the sea known as the Aqua Fun Park. Jet Ski, speed boat ride, glass bottom boat ride, banana boat ride, etc. are thrilling. (Please carry change of clothes) or opt to relax by the seaside at Ocean Blue cafe.<br />
<br />
In the evening, proceed to attend the fascinating Sound and Light Show at Cellular Jail (at 1800 or 1900 Hours, depending on light and sound show ticket availability) where the heroic saga of the Indian freedom struggle is brought to life with poignant music and lights.<br />
<br />
Once you've explored the attractions in Port Blair, return back to the hotel and retire for the day. Stay overnight in the hotel.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 2:</b> Journey to Havelock by Ferry from Port Blair and visit Radhanagar Beach at Havelock
								</p>
								<p class="aj">Check out of the hotel and head towards Havelock, situated 54 kilometers away from Port Blair. The breathtaking views of beaches scattered by palm trees and coral reefs, azure blue water and amazing resorts in this island attract tourists from all over the world. The ferry takes up to 2.5 hours to reach Havelock. Upon your arrival at Havelock, check in at the hotel and relax for some time.<br />
<br />
Pay a visit to the famous Radhanagar Beach in the afternoon. This beach is not only the finest beach in India but also it has been honored as 'Asia's Best Beach' by the famous 'Time Magazine'. The blue water, peaceful environment and white sand offer an overwhelming look to this beach. Here you can enjoy sun basking and stroll in the soft sand. Also, guests can partake in various adventure sports such as scuba diving, game fishing, swimming and snorkeling etc.<br />
<br />
Post spending quality time at the beach, return back to the hotel and take rest. (Kindly remind hotel to provide packed breakfast at Port Blair since the same is not included at Havelock).</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 3:</b> Havelock: Excursion to Elephant Beach
								</p>
								<p class="aj">Today you are taken for an excursion to Elephant beach. Your ride will arrive at 0700 hours as the boat to the island expedition will leave at 0730 hours. Gear up for the most memorable snorkeling, at a distance of just 25 minutes by Boat. This scenic beach with fallen trees and white sand offers tranquil shallow waters perfect for beginner snorkelers. The boat goes right up to the beach. Enjoy snorkeling or spend the day lying on the beach and relaxing. The hard coral reef here starts close to shore at a depth of about 1 metre and has plenty of marine life.<br />
<br />
Return to your hotel for a relaxing night stay.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 4:</b> Ferry from Havelock to Neil Island and sightseeing at Neil Island
								</p>
								<p class="aj">After breakfast, check-out from the hotel and transfer to the jetty to board the ferry to Neil Island. Upon arrival, transfer to the Hotel in Neil Island and check-in. Set out for a sightseeing trip to Laxmanpur Beach and Bharatpur Beach in the evening. Enjoy a comfortable overnight stay at Neil Island.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 5:</b> Ferry from Neil Island to Port Blair
								</p>
								<p class="aj">After breakfast at the hotel, check-out and transfer to the jetty. Board the ferry to Port Blair. (ferry timing depends upon availability). Upon reaching Port Blair, transfer to your hotel and spend the rest of the day at leisure.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 6:</b> Port Blair – City Tour and Corbyn's Cove Beach
								</p>
								<p class="aj">Start the day with an appetizing breakfast, start for a tour of places in and around Port Blair. The City Tour starts with the famous Cellular Jail, which is a witness to the Indian freedom struggle. Next is Chatham Saw Mill, one of the oldest & largest in Asia). Forest Museum, is worth your time. At the Fisheries Museum, you would explore around 350 species of marine life such as starfish, fishes and live corals. In the Anthropological Museum, the tribal culture of the region is displayed. Here you will see a huge collection of weapons, models, clothes, baskets, photographs and tribal boats etc. The Naval Marine Museum, known as Samudrika Museum run and owned by the Indian Navy is a treasure of antique collections of corals and shells etc. The museum also displays the history, geography and culture of Andaman and Nicobar Islands. Later, enjoy a fantastic experience of discovering the Port Blair Museum and return back to the hotel for overnight stay.<br />
<br />
After lunch, proceed to visit Corbyn's Cove Beach. The only beach in Port Blair is ideal to relax and unwind. Proceed for local shopping.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 7:</b> Departure
								</p>
								<p class="aj">Take your return flight Port Blair for onward journey with fond memories of the mesmerizing Andaman.</p>
								</td>
								</tr>
								</table>					
								</div>						<br />
												 <p class="headHr p7px b pl10px xlarge">Tour Detail</p>
			             <div class="data p15px aj">
										
						<p class="large b mb5px dif">Inclusions :</p>
						<ul>
															<li>Hotel</li>
																		<li>Sightseeing</li>
															</ul>
						<br />
											
						<p class="large b mb5px dif">Terms &amp; Conditions :</p>* Some Advance Percentage of total booking amount 
* Airfare/Transport fare to be paid full at one time in advance.~^#^~* Upon cancellation, refund will be made after deducting the Retention Amount. 
* Retention Amount varies as per the number of days left before your package start date. ~^#^~												</div>
												
						<div class="ac mb10px">
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.andamanleisure.co.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Discover Andaman With Neil Island Tour - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>
						<a href="#" onclick="document.getElementById('frmpackagedetail').submit();" class="button p7px pl12px pr12px c5px b large dib mt10px">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="84155"/>
						</form>
						</div>
						
						";i:1;s:77:"Book Discover Andaman With Neil Island Tour - 6 Nights / 7 Days Tour Packages";i:2;s:136:"book discover andaman with neil island tour - 6 nights / 7 days tour packages, beach and islands tour packages, port blair tour packages";i:3;s:178:"Andaman Leisure Pvt. Ltd. offers Discover Andaman With Neil Island Tour - 6 Nights / 7 Days tour package, budget Beach and Islands tour packages for Port Blair at exciting price.";i:4;s:420:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Port Blair"        
		                 },
		      "description": "",
		      "name": "Discover Andaman With Neil Island Tour",
		      "telephone": "+91-9476010441"
		    }
		    </script>
			";i:5;N;}